// 导入express模块
let express = require('express')
// 创建一个express实例
let app = express()

// 启动服务器并监听
app.listen(8080, function () {
    console.log('服务器启动成功，端口号：8080');
})

// 通过req.body获取post请求传过来的参数（所有的请求都能处理你传过来的body参数）
app.use(express.urlencoded({ extended: true }))

// 导入解密包
let jwt = require('express-jwt')

// 导入封装好的db文件
// let db = require('./../utils/db')



// unless() 完成身份认证
app.use(
    jwt({
        secret: 'haha', // 生成token时的 钥匙，必须统一
        algorithms: ['HS256'], // 必填，加密算法，无需了解
    }).unless({
        path: ['/api/v1/admin/user/login'], // 除了这个登录接口，其他都需要认证
    }),
)

// 引入category路由
let category = require('./router/category')
app.use(category)

// 加载用户user路由
let user = require('./router/user')
app.use('/api/v1', user)


// 统一处理错误
// app.use(function (err, req, res, next) {
//     res.send({ code: 400, msg: err })
// })


// token验证失败错误处理中间件
app.use((err, req, res, next) => {
    // token 验证失败会出现UnauthorizedError
    if (err.name === 'UnauthorizedError') {
        res.status(403).send({ code: 403, message: '身份认证失败！未登录被禁止访问！' })
    }
})